Skip to content

feat: export arrangement as wav#58

Merged
britle20 merged 1 commit into
developfrom
feat/50-arrangement-wav-export
Jun 14, 2026
Merged

feat: export arrangement as wav#58
britle20 merged 1 commit into
developfrom
feat/50-arrangement-wav-export

Conversation

@britle20

Copy link
Copy Markdown
Collaborator

Summary

  • Adds an offline arrangement renderer using OfflineAudioContext and a small native PCM WAV encoder.
  • Wires the sidebar Export button to render and download the full arrangement as stereo 44.1 kHz 16-bit PCM WAV.
  • Includes arranged hybrid drums, Default Synth notes, Iowa Piano sampled notes, imported audio clips, track volume, track mute/solo, and master gain.
  • Keeps export separate from the live audio engine so transport state, active voices, and live decoded caches are not mutated.
  • Updates docs, feature status, Active Issue Order, and unit tests.

Changes

  • Shared the existing PCM WAV decode fallback through src/audio/audio-buffer-decoder.ts.
  • Added src/audio/offline-arrangement-renderer.ts for offline scheduling/rendering.
  • Added src/audio/wav-encoder.ts for 16-bit PCM WAV Blob encoding.
  • Extended arrangement audio events with optional audio clip duration/source offset metadata so export can crop imported audio placements.
  • Added export busy/error UI in the project sidebar.

Testing

  • npm run typecheck --if-present
  • npm run lint --if-present
  • npm run test --if-present 14 files / 93 tests
  • npm run build --if-present
  • Dev server smoke check: npm run dev -- --host 127.0.0.1 --port 5173; Vite used http://127.0.0.1:5174/, and curl -I returned HTTP 200.

Screenshots

Not captured. The UI change is the existing sidebar Export button gaining busy/error behavior.

Notes / Limitations

  • Export renders the full arrangement length, not the current loop range.
  • Imported audio clips are cropped to placement length; they are not time-stretched.
  • No MP3/FLAC/stem export, mastering, normalization, or background worker rendering in this pass.

Closes #50

@britle20 britle20 merged commit 4e518f4 into develop Jun 14, 2026
1 check passed
@britle20 britle20 mentioned this pull request Jun 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant